package com.yn.service.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.yn.common.model.zy.SubscribeInfoDO;
import com.yn.common.page.BasePage;
import com.yn.common.request.sc.PageParamRequest;
import com.yn.common.request.zy.*;
import com.yn.common.response.zy.DiagnosisInfoResponse;
import com.yn.common.response.zy.InstPageInfoResponse;
import com.yn.common.response.zy.InstitutionInfoResponse;
import com.yn.common.response.zy.DictResponse;

import java.util.List;


/**
 * <p>
 * 预约信息表 服务类
 * </p>
 *
 * @author xuquanjun
 * @since 2025-07-07
 */
public interface ISubscribeInfoService extends IService<SubscribeInfoDO> {

    /**
     *就医加号和加急住院预约申请
     * */
    String apptAddSave(ApptAddInfoRequest request);

    /**
     * 机构床位预约申请
     * */
    String orgBedAddSave(InstAppointmentRequest request);

    /**
     * 展示普通预约和住院预约详情
     * */
    DiagnosisInfoResponse showInpatientDetail(Integer id);

    /**
     * 机构床位预约详情
     * */
    InstitutionInfoResponse showInstitutionDetail(Integer id);

    /**
     * 修改普通预约或住院预约
     * */
    String diagnosisModify(ApptModifyInfoRequest request,Integer userId);

    /**
     * 修改机构床位预约
     * */
    String institutionModify(InstModifyInfoRequest request, Integer userId );

    /**
     * 展示普通预约和住院预约详情
     * */
    BasePage<DiagnosisInfoResponse> listApptPage(ApptInfoQuery query, PageParamRequest pageRequest);

    /**
     * 分页展示机构预约
     * */
    BasePage<InstPageInfoResponse> listInstPage(InstInfoQuery query, PageParamRequest pageRequest);

    /**
     * 预约取消——通用接口
     * */
    void appointmentCancel(Integer id, Integer code,Integer userId);

    /*List<DictResponse> showInsuranceType();

    List<DictResponse> showPatientRelationType();*/

    /**
     * 显示字典
     * */
    List<DictResponse> showDictType(String dictName);

    /**
     * 修改预约状态
     * @param id 预约id
     * @param status 预约状态
     * @return
     */
    void modifyStatus(Integer id, Integer status);
}
